package main

import (
	"fmt"
)

/**
1、panic会中断程序的执行，除非遇到了recover
2、recover只能在defer中使用
*/
func tryRecover() {

	fmt.Println("测试 recover")

	defer func() {
		r := recover()
		if err, ok := r.(error); ok {
			fmt.Println("发生了一个错误：", err)
		} else {
			fmt.Println("不是一个错误，重新panic出去")
			panic(r)
		}
	}()

	// 1、捕获到	panic 抛出的一场
	// panic(errors.New("手动panic出一个异常"))

	// 2、程序运行过程中发生了异常
	//a,b := 1,0
	//a = a / b

	// 3、panic一个字符串
	panic("this is a string")
}

func main() {

	tryRecover()
}
